home *** CD-ROM | disk | FTP | other *** search
- unit UnitObjectResultSetBase;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
- UnitObjectBase, Db, DBTables;
-
- type
- TObjectResultSetBase = class;
- TObjectResultSetClass = class of TObjectResultSetBase;
- TObjectResultSetBase = class(TObjectBase)
- Query: TQuery;
- private
-
- FSqlWhereClause: string;
- FSqlOrderByClause: string;
-
- function GetSql: string;
-
- protected
-
- function GetSqlSelectClause: string; virtual; abstract; // Provided by the sub-class
- function GetSqlFromClause: string; virtual; abstract; // Provided by the sub-class
- function GetProtectedSqlWhereClause: string; virtual; // Optionally provided by the sub-class
-
- property ProtectedSqlWhereClause: string read GetProtectedSqlWhereClause;
-
- function GetSelectedRecordKey: integer; virtual; abstract; // Provided by the sub-class
-
- public
-
- property SqlSelectClause: string read GetSqlSelectClause;
- property SqlFromClause: string read GetSqlFromClause;
- property SqlWhereClause: string read FSqlWhereClause write FSqlWhereClause;
- property SqlOrderByClause: string read FSqlOrderByClause write FSqlOrderByClause;
-
- property SelectedKey: integer read GetSelectedRecordKey;
-
- procedure RefreshResultSet;
-
- function IsEmpty: boolean;
-
- end;
-
- var
- ObjectResultSetBase: TObjectResultSetBase;
-
- implementation
-
- {$R *.DFM}
-
- { TObjectResultSetBase }
-
- function TObjectResultSetBase.IsEmpty: boolean;
- begin
- Result := (Query.Bof and Query.Eof);
- end;
-
- function TObjectResultSetBase.GetProtectedSqlWhereClause: string;
- begin
-
- end;
-
- function TObjectResultSetBase.GetSql: string;
- begin
-
- end;
-
- procedure TObjectResultSetBase.RefreshResultSet;
- var s: string;
- begin
- Query.DisableControls;
- try
- Query.Close;
- Query.SQL.Clear;
- Query.SQL.Add('select');
- Query.SQL.Add(SqlSelectClause);
- Query.SQL.Add('from');
- Query.SQL.Add(SqlFromClause);
-
- s := SqlWhereClause;
- if (SqlWhereClause = '') and (ProtectedSqlWhereClause = '')
- then s := ''
- else if (SqlWhereClause = '') and (ProtectedSqlWhereClause <> '')
- then s := ProtectedSqlWhereClause
- else if (SqlWhereClause <> '') and (ProtectedSqlWhereClause = '')
- then s := SqlWhereClause
- else s := '(' + ProtectedSqlWhereClause + ') and (' + SqlWhereClause + ')';
-
- if (s <> '') then begin
- Query.SQL.Add('where');
- Query.SQL.Add(s);
- end;
-
- if (SqlOrderByClause <> '') then begin
- Query.SQL.Add('order by ');
- Query.SQL.Add(SqlOrderByClause);
- end;
-
- Query.Open;
- finally
- Query.EnableControls;
- end; // try..finally
-
- end;
-
- end.
-